﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Windows.Forms;


public partial class Pages_Masters_Default : System.Web.UI.Page
{
    static bool primerLoad = true;
    protected void Page_Load(object sender, EventArgs e)
    {
        HttpCookie cookie = Request.Cookies["agenteLogged"];
        if (cookie == null)
        {
            Response.Redirect("loginError.aspx");
        }

        if (primerLoad)
        {
            lblRutAgenteCargo.Text = cookie.Value.ToString();
            bActualizar.Visible = false;
            bEliminar.Visible = false;
            primerLoad = false;
        }

    }

    protected string mensaje(string mensaje, string titulo, MessageBoxButtons botones, MessageBoxIcon icono)
    {
        DialogResult resultado = MessageBox.Show(mensaje, titulo, botones, icono);
        if (resultado == DialogResult.Yes) return "yes";
        else if (resultado == DialogResult.No) return "no";
        else return "otro";
    }

    protected void resetCampos()
    {
        tbRut.Text = "";
        tbVerificador.Text = "";
        tbNombre.Text = "";
        tbEmail.Text = "";
        tbDireccion.Text = "";
        ddlTipo.SelectedIndex = 0;        
    }
    protected bool existenCamposVacios()
    {
        bool resultado = false;
        if (tbRut.Text == "") resultado = true;
        if (tbEmail.Text == "") resultado = true;
        if (tbNombre.Text == "") resultado = true;
        if (tbDireccion.Text == "") resultado = true;
        return resultado;
    }

    protected void setBotonesNuevo()
    {
        resetCampos();
        bIngresar.Visible = true;
        bActualizar.Visible = false;
        bEliminar.Visible = false;
        tbRut.Enabled = true;
        tbVerificador.Enabled = true;
    }


    protected string verificarRut(string rutString)
    {
        int rut = int.Parse(rutString);
        int Digito;
        int Contador;
        int Multiplo;
        int Acumulador;
        string RutDigito;

        Contador = 2;
        Acumulador = 0;

        while (rut != 0)
        {
            Multiplo = (rut % 10) * Contador;
            Acumulador = Acumulador + Multiplo;
            rut = rut / 10;
            Contador = Contador + 1;
            if (Contador == 8)
            {
                Contador = 2;
            }

        }

        Digito = 11 - (Acumulador % 11);
        RutDigito = Digito.ToString().Trim();
        if (Digito == 10)
        {
            RutDigito = "K";
        }
        if (Digito == 11)
        {
            RutDigito = "0";
        }
        return (RutDigito);
    }








    protected void bIngresar_Click(object sender, EventArgs e)
    {
        if (!existenCamposVacios())
        {
            int tipoCliente;

            if (ddlTipo.Text.CompareTo("Real") == 0) tipoCliente = 0;
            else tipoCliente = 1;

            string confirme = "Esta seguro de ingresar al agente de RUT\n\n" + tbRut.Text + "-" + tbVerificador.Text + "\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nEmail = " + tbEmail.Text + " \n Direccion = " + tbDireccion.Text + "\nTipo = " + ddlTipo.SelectedValue + "\nAgente a cargo = " + lblRutAgenteCargo.Text;
            string respuesta = mensaje(confirme, "CONFIRME EL INGRESO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (respuesta.CompareTo("yes") == 0)
            {

                ClientesBLL clientebll = new ClientesBLL();
                String passCliente = tbRut.Text.Substring(0, 4) + tbNombre.Text.Substring(0, 4); ;
                int filasAfectadas = clientebll.insertarCliente(tbRut.Text + "-" + tbVerificador.Text, lblRutAgenteCargo.Text, tbNombre.Text, tbEmail.Text, tbDireccion.Text, tipoCliente, passCliente);

                if (filasAfectadas > 0) mensaje("Agente ingresado exitosamente", "EXITO!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else mensaje("Ocurrio un error. Vuelva a intentar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                gvClientes.DataBind();
                setBotonesNuevo();
            }
        }
    }
    protected void bActualizar_Click(object sender, EventArgs e)
    {
        if (!existenCamposVacios())
        {
            int tipoCliente;

            if (ddlTipo.Text.CompareTo("Real") == 0) tipoCliente = 0;
            else tipoCliente = 1;

            string confirme = "Esta seguro de actualizar al agente de RUT\n\n" + tbRut.Text + "-" + tbVerificador.Text + "\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nEmail = " + tbEmail.Text + " \n Direccion = " + tbDireccion.Text + "\nTipo = " + ddlTipo.SelectedValue + "\nAgente a cargo = " + lblRutAgenteCargo.Text;
            string respuesta = mensaje(confirme, "CONFIRME LA ACTUALIZACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            if (respuesta.CompareTo("yes") == 0)
            {

                ClientesBLL clientebll = new ClientesBLL();
                int filasAfectadas = clientebll.actualizarCliente(tbRut.Text + "-" + tbVerificador.Text, lblRutAgenteCargo.Text, tbNombre.Text, tbEmail.Text, tbDireccion.Text, tipoCliente);

                if (filasAfectadas > 0) mensaje("Agente ingresado exitosamente", "EXITO!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                else mensaje("Ocurrio un error. Vuelva a intentar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);

                gvClientes.DataBind();
                setBotonesNuevo();
            }
        }
    }
    protected void bEliminar_Click(object sender, EventArgs e)
    {
        string confirme = "Esta seguro de eliminar al agente de RUT\n\n" + tbRut.Text + "-" + tbVerificador.Text + "\n\ncon los siguientes datos:\n\nNombre = " + tbNombre.Text + " \nEmail = " + tbEmail.Text + " \n Direccion = " + tbDireccion.Text + "\nTipo = " + ddlTipo.SelectedValue + "\nAgente a cargo = " + lblRutAgenteCargo.Text;
        string respuesta = mensaje(confirme, "CONFIRME LA ELIMINACION", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
        if (respuesta.CompareTo("yes") == 0)
        {
            ClientesBLL clientebll = new ClientesBLL();
            int filasAfectadas = clientebll.eliminarCliente(tbRut.Text + "-" + tbVerificador.Text);
            if (filasAfectadas > 0) mensaje("Cliente eliminado exitosamente", "EXITO!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            else mensaje("Ocurrio un error. Vuelva a intentar.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error);
            setBotonesNuevo();
            gvClientes.DataBind();
        }
    }
    protected void bNuevo_Click(object sender, EventArgs e)
    {
        setBotonesNuevo();
    }
    protected void gvClientes_SelectedIndexChanged(object sender, EventArgs e)
    {
        DataKey key = gvClientes.SelectedDataKey;
        string rutCliente = (string)key.Value;

        ClientesBLL clientebll = new ClientesBLL();
        DataSetCarpay.CLIENTEDataTable dt = clientebll.getCliente(rutCliente);
        string[] rutDividido = rutCliente.Split('-');
        tbRut.Text = rutDividido[0];
        tbVerificador.Text = rutDividido[1];

        tbNombre.Text = (string)dt.Rows[0][dt.NOMBRE_CLIENTEColumn];
        tbEmail.Text = (string)dt.Rows[0][dt.EMAIL_CLIENTEColumn];
        tbDireccion.Text = (string)dt.Rows[0][dt.DIRECCION_CLIENTEColumn];
        if ((int)dt.Rows[0][dt.TIPO_CLIENTEColumn] == 1) ddlTipo.SelectedValue = "Real";
        else ddlTipo.SelectedValue = "Potencial";
        //ddlAgentes.SelectedValue = (string)dt.Rows[0][dt.RUT_AGENTEColumn];
        tbRut.Enabled = false;
        tbVerificador.Enabled = false;
        bIngresar.Visible = false;
        bActualizar.Visible = true;
        bEliminar.Visible = true;
    }

    protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (!tbRut.Text.StartsWith("admin"))
        {
            if (tbVerificador.Text.CompareTo(verificarRut(args.Value)) == 0) args.IsValid = true;
            else args.IsValid = false;
        }
    }

}
